Software Development
Manage your config files (dotfiles) using dotbot and Git
DotBot ⭐
Maths and Statistical programming
Learn git properly
Watch this Then play this game
Install npm, node and typescript
Bash shell:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
nvm install node
Fish shell:
omf install bass
omf install nvm
nvm install node
Updating:
Latest current version: nvm install
Latest LTS version: nvm install --lts
Use specific version: nvm use --lts
or nvm use 14
etc
Switch default version: nvm alias default --lts
or nvm alias default 14
etc
node-typescript:
There is no more node-typescript
(deprecated cli tool as part of original nodejs, for converting .ts code to .js). This functionality is now built into node (e.g. node main.ts main.js
). If you have a tool which requires it, just create the alias: alias node-typescript=node
VS Code Recommendations
Install right-click context menu open for Nautilus
Good extensions:
- Tabnine
- cht.sh (and vscode-snippet extension bound to hotkey)
- Git Graph
- Git Lens
- Markdown All in One
Install Julia
The best way I found was to use the Jill tool to install system-wide, as the package manager versions are old, and the manual install is very... manual. Jill also allows installation and management of multiple versions of Julia under the julias
installation directory
sudo pip install jill
sudo jill install
For notebook support (recommended), use Pluto.jl
You may also want to install the VS Code extension julia-vscode
(the older Atom IDE is now discontinued).
Pimp your dev setup
Also see the 3. Terminal chapter of this book.
-
One developers f-ing awsome dev setup to get some ideas.
-
More inspiration.
-
Some more
-
For great monospace fonts for terminal and code, recommend one of the Nerd Fonts which are various popular coding fonts patch to include many additional icons and features:
- Hack⭐
- FiraCode
-
Looking for mouse-less efficiency or better management of large/multiple displays: see Tiling Window Managers (TWM)
Compile your own Kernel
Why?
- Learn to compile a kernel
- Customize the kernel for your machine by removing un-needed features, drivers and modules (especially if your device has limited space)
- Modify it to support new hardware or features
- Apply 3rd party code patches for new hardware or features that are not available as modules yet.
The main idea is:
- Install dependencies
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison gcc
- Get the Kernel code:
git clone
the kernel code you want to build - In the cloned folder:
make menuconfig
to configure the kernel features and save as.config
file. - Run
make
command with parameters: number of cores to use during build (e.g. 16), build a .deb package for easy install/uninstall and suffix with-custom
so you can identify it easilymake -j16 deb-pkg LOCALVERSION=-custom
- Wait some time (Took 18 minutes on my 8 core 16 thread AMD laptop. On some devices it can take hours)
- Install both resulting
linux-headers-...
andlinux-image-...
deb files, which will be placed outside the git project folder.
Docker for developers
Docker runs natively on Linux so there is no need for "Docker Desktop" which is essentially a user-friendly VM manager for developers on non-Linux OS (hence required on Windows and Mac).
Simply Install Docker Engine (CE) for development. Here is a good way to do it, which also installs Portainer⭐, a helpful web based GUI. This will also enable docker to run automatically as a background service.
After installing Docker Engine CE + Portainer, you would want to add your user to docker group permissions (so you dont have to do sudo docker
all the time), and install docker-compose:
sudo groupadd docker
sudo usermod -aG docker $USER
Then reboot your PC and try docker ps
which should no loneger require sudo
Then install docker-compose. Or a simpler way on Ubuntu is just run: sudo pip install docker-compose